package dao;

import dal.Conexion;
import dto.Venta;
import java.util.Vector;
import java.sql.ResultSet;

public class VentaDaoPostgreSQL extends VentaDao {

    @Override
    public void update() throws Exception {
        Conexion objConexion = Conexion.getOrCreate();

        if (objDto.getIidventa() > 0) {
            StringBuffer query = new StringBuffer("UPDATE venta SET ");
            query.append("icitransportista = '" + objDto.getIcitransportista() + "',");
            query.append("sfecha = '" + objDto.getSfecha() + "',");
            if(objDto.getSfechadepago() == null)
                query.append("sfechadepago = NULL,");
            else
                query.append("sfechadepago = '" + objDto.getSfechadepago() + "',");
            query.append("imonto = '" + objDto.getImonto() + "',");
            query.append("stipoventa = '" + objDto.getStipoventa() + "',");
            query.append("iidsede = '" + objDto.getIidsede() + "' ");
            query.append("WHERE iidventa = '" + objDto.getIidventa() + "'");
            System.out.println(query);
            int upd = objConexion.ejecutarSimple(query.toString());
            if (upd == 0) {
                throw new Exception("El registro no pudo ser actualizado");
            }
        }

        if (objDto.getIidventa() == 0) {
            StringBuffer query = new StringBuffer("INSERT INTO venta VALUES (");
            query.append("default,");
            query.append("'" + objDto.getIcitransportista() + "',");
            query.append("'" + objDto.getSfecha() + "',");
            if(objDto.getSfechadepago() == null)
                query.append("NULL,");
            else
                query.append("'" + objDto.getSfechadepago() + "',");
            query.append("'" + objDto.getImonto() + "',");
            query.append("'" + objDto.getStipoventa() + "',");
            query.append("'" + objDto.getIidsede() + "' ");
            query.append(")");
            System.out.println(query);
            int id = objConexion.ejecutarInsert(query.toString());
            if (id == 0) {
                throw new Exception("El registro no pudo ser insertado");
            } else {
                objDto.setIidventa(id);
            }

        }
        objConexion.desconectar();
    }

    @Override
    public void delete() {
        Conexion objConexion = Conexion.getOrCreate();
        StringBuffer query = new StringBuffer("DELETE FROM venta ");
        query.append("WHERE iidventa = " + objDto.getIidventa());
        objConexion.ejecutarSimple(query.toString());
        objConexion.desconectar();
    }

    @Override
    public Venta select(int id) {
        try {
            Conexion objConexion = Conexion.getOrCreate();
            String query = "SELECT * FROM venta WHERE iidventa = " + id;
            ResultSet objResultSet = objConexion.ejecutar(query);
            if (objResultSet.next()) {
                Venta obj = new Venta();
                int _iidventa = objResultSet.getInt("iidventa");
                obj.setIidventa(_iidventa);

                int _icitransportista = objResultSet.getInt("icitransportista");
                obj.setIcitransportista(_icitransportista);

                String _sfecha = objResultSet.getString("sfecha");
                obj.setSfecha(_sfecha);

                String _sfechadepago = objResultSet.getString("sfechadepago");
                obj.setSfechadepago(_sfechadepago);

                double _imonto = objResultSet.getDouble("imonto");
                obj.setImonto(_imonto);

                String _stipoventa = objResultSet.getString("stipoventa");
                obj.setStipoventa(_stipoventa);

                int _iidsede = objResultSet.getInt("iidsede");
                obj.setIidsede(_iidsede);

                objConexion.desconectar();

                return obj;
            }
        } catch (Exception ex) {
            ;
        }
        return null;
    }

    @Override
    public Vector<Venta> selectTodos() {
        Vector<Venta> registros = new Vector<Venta>();
        try {
            Conexion objConexion = Conexion.getOrCreate();
            String query = "SELECT * FROM venta ";
            ResultSet objResultSet = objConexion.ejecutar(query);
            while (objResultSet.next()) {
                Venta obj = new Venta();
                int _iidventa = objResultSet.getInt("iidventa");
                obj.setIidventa(_iidventa);

                int _icitransportista = objResultSet.getInt("icitransportista");
                obj.setIcitransportista(_icitransportista);

                String _sfecha = objResultSet.getString("sfecha");
                obj.setSfecha(_sfecha);

                String _sfechadepago = objResultSet.getString("sfechadepago");
                obj.setSfechadepago(_sfechadepago);

                double _imonto = objResultSet.getDouble("imonto");
                obj.setImonto(_imonto);

                String _stipoventa = objResultSet.getString("stipoventa");
                obj.setStipoventa(_stipoventa);

                int _iidsede = objResultSet.getInt("iidsede");
                obj.setIidsede(_iidsede);

                registros.addElement(obj);
            }
            objConexion.desconectar();
        } catch (Exception ex) {
            ;
        }
        return registros;
    }

}
